// "use client";

// import { searchApi } from '@/constants';
// import { get, post, put, del } from '@/util/api';

// // 搜索结果项接口
// export interface SearchResult {
//   id: number;
//   type: 'article' | 'comment' | 'user' | 'category' | 'tag';
//   title: string;
//   content?: string;
//   author?: string;
//   avatar?: string;
//   url: string;
//   createdAt?: string;
//   relevance: number;
// }

// // 搜索响应接口
// export interface SearchResponse {
//   data: SearchResult[];
//   total: number;
//   query: string;
//   filters: Record<string, any>;
//   took: number; // 搜索耗时（毫秒）
// }

// // 搜索历史项接口
// export interface SearchHistory {
//   id: number;
//   userId?: number;
//   keyword: string;
//   filters?: Record<string, any>;
//   resultCount: number;
//   ip?: string;
//   userAgent?: string;
//   createdAt: string;
// }

// // 热门搜索项接口
// export interface HotSearch {
//   keyword: string;
//   count: number;
//   trend: number; // 趋势（正值上升，负值下降）
//   lastSearchAt: string;
// }

// // 搜索配置接口
// export interface SearchConfig {
//   enabled: boolean;
//   minKeywordLength: number;
//   maxResultsPerPage: number;
//   suggestEnabled: boolean;
//   historyEnabled: boolean;
//   cacheEnabled: boolean;
//   cacheTTL: number;
//   rateLimit: {
//     enabled: boolean;
//     requestsPerMinute: number;
//   };
// }

// /**
//  * 搜索管理服务类
//  * 封装所有搜索相关的API调用
//  */
// class SearchService {
//   /**
//    * 执行搜索
//    * @param query 搜索关键词
//    * @param params 搜索参数
//    * @returns Promise<SearchResponse>
//    */
//   async search(query: string, params?: {
//     type?: string | string[];
//     page?: number;
//     pageSize?: number;
//     filters?: Record<string, any>;
//     sortBy?: 'relevance' | 'createdAt';
//     sortDirection?: 'asc' | 'desc';
//   }): Promise<SearchResponse> {
//     try {
//       const response = await get(searchApi.SEARCH, { query, ...params });
//       return response.data || response;
//     } catch (error) {
//       console.error('搜索失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 获取搜索建议
//    * @param query 搜索关键词前缀
//    * @param params 建议参数
//    * @returns Promise<{ suggestions: string[]; took: number }>
//    */
//   async getSuggestions(query: string, params?: {
//     limit?: number;
//     type?: string;
//   }): Promise<{ suggestions: string[]; took: number }> {
//     try {
//       const response = await get(searchApi.SUGGESTIONS, { query, ...params });
//       return response.data || response;
//     } catch (error) {
//       console.error('获取搜索建议失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 获取热门搜索
//    * @param params 查询参数
//    * @returns Promise<HotSearch[]>
//    */
//   async getHotSearches(params?: {
//     limit?: number;
//     days?: number;
//   }): Promise<HotSearch[]> {
//     try {
//       const response = await get(searchApi.HOT, params);
//       return response.data || response;
//     } catch (error) {
//       console.error('获取热门搜索失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 获取搜索历史
//    * @param params 查询参数
//    * @returns Promise<{ data: SearchHistory[]; total: number }>
//    */
//   async getSearchHistory(params?: {
//     page?: number;
//     pageSize?: number;
//     userId?: number;
//     keyword?: string;
//     startDate?: string;
//     endDate?: string;
//   }): Promise<{ data: SearchHistory[]; total: number }> {
//     try {
//       const response = await get(searchApi.HISTORY, params);
//       return response.data || response;
//     } catch (error) {
//       console.error('获取搜索历史失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 清除搜索历史
//    * @param userId 用户ID（可选，不提供则清除当前用户）
//    * @returns Promise<void>
//    */
//   async clearSearchHistory(userId?: number): Promise<void> {
//     try {
//       await del(searchApi.CLEAR_HISTORY, userId ? { userId } : undefined);
//     } catch (error) {
//       console.error('清除搜索历史失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 导出搜索数据
//    * @param format 导出格式
//    * @param params 查询参数
//    * @returns Promise<Blob>
//    */
//   async exportSearchData(format: 'json' | 'csv' = 'json', params?: {
//     startDate?: string;
//     endDate?: string;
//     includeHistory?: boolean;
//     includeStats?: boolean;
//   }): Promise<Blob> {
//     try {
//       const response = await get(searchApi.EXPORT, { format, ...params }, {
//         responseType: 'blob',
//       });
//       return response.data || response;
//     } catch (error) {
//       console.error('导出搜索数据失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 获取搜索统计数据
//    * @param params 查询参数
//    * @returns Promise<any>
//    */
//   async getSearchStats(params?: {
//     startDate?: string;
//     endDate?: string;
//     period?: 'day' | 'week' | 'month' | 'year';
//   }): Promise<any> {
//     try {
//       const response = await get(searchApi.STATS, params);
//       return response.data || response;
//     } catch (error) {
//       console.error('获取搜索统计数据失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 更新搜索配置
//    * @param config 配置数据
//    * @returns Promise<SearchConfig>
//    */
//   async updateSearchConfig(config: Partial<SearchConfig>): Promise<SearchConfig> {
//     try {
//       const response = await put(searchApi.CONFIG, config);
//       return response.data || response;
//     } catch (error) {
//       console.error('更新搜索配置失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 获取搜索配置
//    * @returns Promise<SearchConfig>
//    */
//   async getSearchConfig(): Promise<SearchConfig> {
//     try {
//       const response = await get(searchApi.CONFIG);
//       return response.data || response;
//     } catch (error) {
//       console.error('获取搜索配置失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 索引重建
//    * @param type 索引类型
//    * @returns Promise<{ taskId: string; status: string }>
//    */
//   async rebuildIndex(type?: string): Promise<{ taskId: string; status: string }> {
//     try {
//       const response = await post(searchApi.REBUILD_INDEX, type ? { type } : undefined);
//       return response.data || response;
//     } catch (error) {
//       console.error('索引重建失败:', error);
//       throw error;
//     }
//   }
// }

// // 导出搜索服务实例
// export const searchService = new SearchService();
// export default searchService;